package design;

public class Singleton_Demo2 {
    public static void main(String[] args) {
        MySingleton2 singleton = MySingleton2.getInstance();
        singleton.fun();
    }
}
//按需加载--内存问题
//懒汉式会出现线程安全问题
//如果多天记录操作了共享资源，一定要加锁
class MySingleton2{
    private static MySingleton2 instance;//不会一上来new，不会占内存

    private MySingleton2(){

    }
    /*
        共享资源m是静态的，使用的锁对象必须是固定的类名.class
        如果是静态方法，加锁后自动分配的锁对象就是类名.class
     */
    public static synchronized MySingleton2 getInstance() {
        if (instance == null){
            instance = new MySingleton2();//使用时才进行new对象，
        }
        return instance;
    }

    public void fun(){
        System.out.println("你好");
    }
}